Ansible基础篇 - Ansible介绍

一、什么是Ansible?

1、基于Python开发的一个自动化运维工具。

2、可以批量的管理远程的主机,实现批量部署服务、执行命令等。

3、基于模块化来工作,提供了很高的扩展性。

4、基于SSH协议。

二、Ansible 名字的由来?

Ansible 取名自知名小说 <<安德的游戏>>(Ender’s Game),并且这部小说在2013年被改编成电影,2014年1月7号在中国上映。

在电影中,安塞波(Ansible)是虚构的一种以超光速传递信息的通讯装置,片中主角安德(Ender)和他的伙伴们通过安塞波(Ansible)跨越时空指挥无数的战舰,就好比我们控制海量的远端服务器一样。

20200817159765285241685.png

三、Ansible 能做什么?

电影中的 Ansible 是用来控制战舰,消灭敌人的。那么我们服务器上的 Ansible 可以做些什么呢?

我们通过查看 Ansible 的模块可知,它几乎支持数据中心的一切自动化,包括(不限于)

操作系统层面:从 Linux(物理机、虚拟机、云环境),Unix,到 Windows。

虚拟化平台:VMware、Docker、Cloudstack、LXC、Openstack 等。

商业化硬件:F5、ASA、Citrix、Eos 以及各种服务器设备的管理。

系统应用层:Apache、Zabbix、RabbitMQ、SVN、GIT 等。

红帽解决方案:Openshift、Ceph、GlusterFS 等,支持几乎所有红帽解决方案的一键部署和配置。

云平台: IBM Cloud 、AWS、Azure、Cloudflare、Red Hat CloudForms、Google、Linode、Digital Ocean 等。

四、Ansible 的优点

1、轻量级,远端主机无需安装任何依赖。

2、易读性,playbook 基于 YAML 开发的,而 YAML 是一种易于人类读写的数据格式语言。

3、使用 python 编写,维护更简单。

4、内置上千个模块,可以满足我们工作中绝大多数的需求。

5、开源社区活跃。

五、Ansible 包含哪些组件?

Ansible 的核心组件包括:

1、Modules(模块)

Modules 是 Ansible 的核心资产,有了 Modules , 我们才能调用这些 Modules 来完成我们想要执行的自动化任务。

2、Inventory(管理对象的清单)

Inventory 是 Ansible 要管理对象的清单。在清单中,可以配置分组、主机信息等。

3、Playbook(任务编排)

任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YAML文件。

4、Roles(编排Playbook)

Roles 是将 Playbook 分成多个文件的主要机制。这简化了编写复杂的 Playbook,并使其更易于重用。通过 Roles 可以将 Playbook 分解为可重用的组件。

5、Plugins(插件)

Plugins 是增强 Ansible 核心功能的代码。Ansible 附带了许多方便的插件,如果这些插件不够,我们可以编写自己的插件。Ansible 自带的 Plugins 如下图所示:
20200817159765188699497.png

六、Ansible 如何运作?

流程图

20200817159765293893463.png

七、Ansible 代码仓库及文档

Ansible 的代码仓库存放在 Github 上,仓库地址为:https://github.com/ansible/ansible

Ansible 官方文档地址为:https://docs.ansible.com/ansible/latest/index.html。